/**
 * 场景四：把并发调用变成按特定规律顺序调用
 * 这里需要说明的是，场景三与场景四都是都并发调用变成按特定规律顺序调用，
 * 但在场景三中，每个方法只会被一个线程调用；而场景四中，每个方法会被多个线程调用
 *
 *
 * 信号量模型与管程模型是线程间协作的两大利器，大部分情况下，二者可以互相转换。它们的区别在于，信号量模型可以让多个线程共享临界区，而管程模型是让线程独占临界区；
 * CountDownLatch主要用于一个线程等待多个线程的场景，而CyclicBarrier则用于多个线程之间互相等待的场景。
 */
public class DH20生成 {
    private static class 方案一Semaphore{}
    private static class 方案二Lock{}
    private static class 方案三CyclicBarrier{}

}
